package saco.bean;
import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import saco.excepcion.DAOExcepcion;
import saco.excepcion.LoginExcepcion;
import saco.modelo.Apoderado;
import saco.modelo.Coordinador;
import saco.modelo.Director;
import saco.modelo.Docente;
import saco.modelo.Persona;
import saco.negocio.UsuarioNegocio;

public class LoginBean {
	private String usuario;
	private String password;
	
	public String validar(){
		System.out.println(usuario);
		System.out.println(password);
		Persona vo = null;
		UsuarioNegocio negocio = new UsuarioNegocio();
		ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
		HttpSession session = (HttpSession)context.getSession(true);
		
		HttpServletRequest request = (HttpServletRequest)context.getRequest();
		try {
			vo = negocio.logear(usuario, password);
			session.setAttribute("USUARIO_ACTUAL", vo);
//			FacesMessage msg = new FacesMessage("Bienvenido", usuario);
//			FacesContext.getCurrentInstance().addMessage(null, msg);
			
			if(vo instanceof Director){
				System.out.println("Funcionalidad del Director");
			}else if(vo instanceof Coordinador){
				System.out.println("Funcionalidad del Coordinador");
			}else if(vo instanceof Docente){
				return "docenteIn";
			}else if(vo instanceof Apoderado){
				return "apoderadoIn";
			}
			
            System.out.println("Ocurrio un error!");
			return "error";
		} catch (DAOExcepcion e) {
			System.err.println(e.getMessage());
			request.setAttribute("msg_error", "Hubo un problema");
			return "error";
		} catch (LoginExcepcion e) {
			System.err.println(e.getMessage());
			request.setAttribute("msg_error", "Usuario y/o clave incorrectos");
			FacesMessage msg = new FacesMessage("Error", "Usuario y/o clave incorrectos");  
            FacesContext.getCurrentInstance().addMessage(null, msg); 
			return "error";
		}	

	}
	
	public String salir(){
		System.out.println("LoginBean: salir()");
		ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
		HttpSession session = (HttpSession)context.getSession(true);
		session.invalidate();
		return "salir";
	}

	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String id) {
		this.usuario = id;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}
